Optimisation des requêtes pour l'économie#1333
Conversation
6c8e2c3 to
70dde0d
Compare
70dde0d to
a2a7db9
Compare
|
au lieu de sauvegarder tout les x temps, pourquoi tu save pas juste a la db au moment ou le plugin se desactive |
|
C'était marqué dans l'issue |
C’est déjà fait xd au L’autosave est volontaire en plus du shutdown save ça évite de perdre toutes les modifications depuis le démarrage si le serveur crash/kill ou si l’arrêt ne va pas jusqu’au bout. Et il ne sauvegarde pas tous les balances à chaque fois, seulement les UUID marqués dirty depuis la dernière sauvegarde :) |
|
Le serveur n'est pas cense etre kill ou crash, meme il ne sera jamais kill... |
|
Ben après il peut crash oui. Mais il est tjr éteint à 2h donc cv |
|
Même si le serveur n’est pas censé crash il peut crash mdrrrrr l’autosave limite la perte si ça arrive et dans tous les cas le coût en perf est faible on ne save pas tous les comptes seulement les dirty en batch |
|
Tu appelles quoi un compte dirty? |
|
Dirty = modifié depuis le dernier save DB |
|
Le probleme, est que la le lag a lieu lors de la premiere connexion des joeurs, c'est un moment que l'on avait fait avec 50bots de souvenir, et le lag venait du save a la db, donc la si je comprends bien, a un moment, le serveur va lag parcequ'il save toutes les donne dans la db a un moment x |
|
Fin et déjà pour qu'on valide le problème, il faudra que tu donnes un jar de ton plugin, on fait un teste avec 50-100 joueurs, et on attends jusqu'au moment où le scheduler s'exécute pour save la db, et on tentera |
|
Bon @gtolontop, si c'est pour faire du vibecoding sur le projet ce n'est pas la peine de venir faire une PR. |
|
Le satan qui se réveille avec le full vibecoding qui fait mal |
MDRRRRR, elle est vraiment niquel ma PR je vois pas le soucis + c'est pas du vibecoding mais j'avoue que mon code a une vibe très propre :) |
Très propre se vibecoding en tous cas |
Dis-moi, qu'aurais-tu fait différemment ? |
|
Donc pourquoi il y a ecris |
Honnetement, bcp de chose, mais si tu "ne vibecode pas" chaque developpeur fait differemment donc je n'aurais pas fait pareil que toi |
Tu mets tout sur le principe de la raison? Pourquoi ? |
|
Fin je dis pas ton initiative est bonne mais quand on voit le préfixe [codex], on a tout de suite moins envie de la merge, de plus tu as une très bonne connaissance du plugin. Tellement une bonne connaissance que tu ajoutes même des tests, des appels à OMCLogger (qui est totalement nouveau et que je doute que tu l'as vu sans une IA qui a codé). Fabuleux ! |
Voila a quoi je penses quand je vois ton message
|
|
J’ai l’impression de me faire clasher alors que ma PR, en soi, je la trouve vraiment bonne. J’ai réellement passé du temps dessus, j’ai réellement codé et testé les choses. Déjà my bad pour le message au-dessus, je l’ai mal pris qu’on me dise ça sans même vraiment review mon travail. Là j’ai surtout l’impression que la discussion part sur “Codex / vibecoding” au lieu de parler du code de la PR et du travail que j’ai vraiment fait. Je n’ai jamais caché avoir utilisé Codex. C’est un très bon outil, je l’ai utilisé notamment pour m’aider à relire, review, trouver des points faibles et améliorer ma PR. Je ne vois pas le problème en soi tant que le code est relu, compris, testé, et corrigé proprement derrière. J’ai corrigé le code moi-même et j’ai écrit le code de la PR. Ce n’est pas du vibecoding où j’ai juste donné l’issue et où il a tout fait. Codex m’a surtout servi de review et d’analyse. Par exemple, quand j’ai voulu finaliser proprement avec des tests et une meilleure gestion des erreurs, il m’a aidé à voir l’existence de Le souci, c’est que j’ai l’impression que la PR est jugée parce qu’il y a écrit Codex dans le tag, sans pointer un vrai problème dans le code. Si le code est mauvais, dites-moi précisément où : logique, perf, API cassée, comportement incorrect, test manquant, etc. Et je corrigerai avec plaisir. Sur le fond, la PR règle bien l’issue #1332 :
Un compte dirty, c’est juste un compte modifié depuis le dernier save DB. Donc si 5 comptes ont changé, on save ces 5 comptes, pas toute la table. Comme je disais pour J’ai testé IG, pas seulement envoyé du code au hasard. Les tests unitaires liés à MockBukkit ont des échecs connus à cause du setup global du plugin / Dream / Contest / NMS, mais les tests ajoutés sur la logique economy passent. Donc vraiment, si vous ne voulez pas merge la PR, donnez-moi une raison technique concrète. Si y’a un vrai souci dans la méthode ou dans le code, je le corrige. Mais juste dire “vibecoding” parce qu’il y a Codex dans le process et dans le tag, sans pointer ce qui est faux dans la PR, ça ne m’aide pas à améliorer quoi que ce soit. |
|
On va réfléchir à un débat entre le staff. |
|
Bonjour, la PR est-elle prête à être revue ? Je vois qu’elle est encore en draft.
|
Oui j’ai résumé trop vite xd sur les tests j'obtiens
Dans le XML de test, les fails sont :
Donc quand j’ai dit Dream/NMS, je parlais de ces causes-là, mais j'essaierais d'être plus précis directement les prochaines fois |
Tkt je préfère que tu me demandes des choses comme cela a la place de l'IA qui te résume mais qui sait pas vrm 👍 |
Tu vois je savais pas que ça crash a cause de la dimension des rêves j'avais pas check et le problème c'est les transactions en async qui fail tt |
Bonjour, elle est encore en draft justement parce que je préfère traiter les retours avant de la passer ready. Pour la réflexion dans les tests je comprends se que tu dis mais j’ai vérifié, Mockito n'est pas dans les dépendances du projet. Je peux soit ajouter Mockito si vous êtes ok avec ça, soit refactorer le test / la logique pour éviter la réflexion. Pour les tests Pour les copies mémoire elles sont là pour éviter qu’un objet mutable récupéré depuis l’API soit modifié sans passer par le dirty tracking. par exemple si |
J'avais bien run les tests juste j'avais pas pensé a te remonter exactement les tests xd |
Si tu fais une issue je pourrais regarder :) |
Tu peux la faire aussi, elle sera validé tkt pas |
Tu veux que je commit sur la même PR ? |
|
Généralement, tu dois ouvrir ta PR pour qu'on sache qu'on peut review. Fait comme cela, sinon il risque d'avoir des oublis |
De fixer les tests? Fait en une autre |
ne t'étonne pas si ta PR ne se fait pas review. |





Petit résumé de la PR:
Optimise la persistance des soldes économie en regroupant les écritures DB des balances modifiées.
Étape nécessaire afin que la PR soit fini (si PR en draft)
2.5.0à assigner)Fixes [BUG] Optimisation de EconomyManager.setBalance #1332
Decrivez vos changements
EconomyManagerécrivait en DB à chaque changement de solde viaplayersDao.createOrUpdate, notamment depuissetBalance,addBalanceetwithdrawBalance.Cette PR garde les soldes à jour en mémoire immédiatement, marque uniquement les comptes modifiés comme à sauvegarder, puis persiste ces comptes en batch avec
saveAllBalances():Le cache utilise aussi
computeIfAbsentpour conserver les nouveaux comptes en mémoire avant leur première sauvegarde. En cas d'erreur pendant la sauvegarde batch, les comptes concernés sont remis dans la liste à sauvegarder.